import 'tpl.makefile.dart' as makefile;
import 'tpl.main.dart' as main;
import 'tpl.app.dart' as app;
import 'tpl.widget.theme_builder.dart' as widget_theme_builder;
import 'tpl.widget.state_builder.dart' as widget_state_builder;
import 'tpl.widget.dispatch_builder.dart' as widget_dispatch_builder;
import 'tpl.widget.base_store_container.dart' as widget_base_store_container;
import 'tpl.debug.app_debug_model.dart' as debug_app_debug_model;
import 'tpl.route.main.dart' as route_main;
import 'tpl.utils.print_util.dart' as utils_print_util;
import 'tpl.utils.screen_util.dart' as utils_screen_util;
import 'tpl.utils.sys_error_util.dart' as utils_sys_error_util;
import 'tpl.utils.encrypt_util.dart' as utils_encrypt_util;
import 'tpl.utils.font_family_util.dart' as utils_font_family_util;
import 'tpl.pages.main.main_page.dart' as pages_main_main_page;
import 'tpl.debug.main.dart' as debug_main;
import 'tpl.debug.app_debug.dart' as debug_app_debug;
import 'tpl.debug.app_error_log.dart' as debug_app_error_log;
import 'tpl.debug.slice_actions.dart' as debug_slice_actions;
import 'tpl.debug.slice_reducer.dart' as debug_slice_reducer;
import 'tpl.store.theme.theme_state.dart' as store_theme_theme_state;
import 'tpl.store.app_config.app_config_state.dart'
    as store_app_config_app_config_state;
import 'tpl.store.redux.action.dart' as store_redux_action;
import 'tpl.store.redux.reducers.dart' as store_redux_reducers;
import 'tpl.store.redux.redux.dart' as store_redux_redux;
import 'tpl.store.redux.redux_middleware.dart' as store_redux_redux_middleware;
import 'tpl.store.redux.redux_state.dart' as store_redux_redux_state;
import 'tpl.store.redux.storage_engine.dart' as store_redux_storage_engine;
import 'tpl.api.interceptors.log_interceptors.dart'
    as api_interceptors_log_interceptors;
import 'tpl.api.entity.base_entity.dart' as api_entity_base_entity;
import 'tpl.api.entity.entity_factory.dart' as api_entity_entity_factory;
import 'tpl.api.interceptors.request_interceptors.dart'
    as api_interceptors_request_interceptors;
import 'tpl.api.interceptors.response_interceptors.dart'
    as api_interceptors_response_interceptors;
import 'tpl.api.manager.http_manager.dart' as api_manager_http_manager;
import 'tpl.api.transformer.transformer.dart' as api_transformer_transformer;
import 'tpl.api.api_factory.dart' as api_api_factory;
import 'tpl.api.api_interface.dart' as api_api_interface;
import 'tpl.utils.toast_util.dart' as utils_toast_util;
import 'tpl.mixin.base_binding_observer_mixin.dart'
    as mixin_base_binding_observer_mixin;
import 'tpl.mixin.base_widget_mixin.dart' as mixin_base_widget_mixin;
import 'tpl.mixin.theme_binding_observer_mixin.dart'
    as mixin_theme_binding_observer_mixin;
import 'tpl.l10n.intl_en.dart' as l10n_intl_en;
import 'tpl.l10n.intl_zh.dart' as l10n_intl_zh;
import 'tpl.l10n.generated.l10n.dart' as l10n_generated_l10n;
import 'tpl.l10n.generated.intl.messages_all.dart'
    as l10n_generated_intl_messages_all;
import 'tpl.l10n.generated.intl.messages_en.dart'
    as l10n_generated_intl_messages_en;
import 'tpl.l10n.generated.intl.messages_zh.dart'
    as l10n_generated_intl_messages_zh;

class FileInfo {
  final String filePath;
  final String Function({dynamic package}) codeBuild;

  const FileInfo({required this.filePath, required this.codeBuild});
}

class Tpl {
  static dynamic get makefileFile => makefile.clazzTpl;

  static List<FileInfo> get buildCode => [
        FileInfo(filePath: 'main.dart', codeBuild: main.clazzTpl),
        FileInfo(filePath: 'app.dart', codeBuild: app.clazzTpl),
        FileInfo(
            filePath: 'store/theme/theme_state.dart',
            codeBuild: store_theme_theme_state.clazzTpl),
        FileInfo(
            filePath: 'store/app_config/app_config_state.dart',
            codeBuild: store_app_config_app_config_state.clazzTpl),
        FileInfo(
            filePath: 'store/redux/action.dart',
            codeBuild: store_redux_action.clazzTpl),
        FileInfo(
            filePath: 'store/redux/reducers.dart',
            codeBuild: store_redux_reducers.clazzTpl),
        FileInfo(
            filePath: 'store/redux/redux.dart',
            codeBuild: store_redux_redux.clazzTpl),
        FileInfo(
            filePath: 'store/redux/redux_middleware.dart',
            codeBuild: store_redux_redux_middleware.clazzTpl),
        FileInfo(
            filePath: 'store/redux/redux_state.dart',
            codeBuild: store_redux_redux_state.clazzTpl),
        FileInfo(
            filePath: 'store/redux/storage_engine.dart',
            codeBuild: store_redux_storage_engine.clazzTpl),
        FileInfo(
            filePath: 'widget/theme_builder.dart',
            codeBuild: widget_theme_builder.clazzTpl),
        FileInfo(
            filePath: 'widget/state_builder.dart',
            codeBuild: widget_state_builder.clazzTpl),
        FileInfo(
            filePath: 'widget/dispatch_builder.dart',
            codeBuild: widget_dispatch_builder.clazzTpl),
        FileInfo(
            filePath: 'widget/base_store_container.dart',
            codeBuild: widget_base_store_container.clazzTpl),
        FileInfo(
            filePath: 'route/main.route.dart', codeBuild: route_main.clazzTpl),
        FileInfo(
            filePath: 'api/entity/base_entity.api.dart',
            codeBuild: api_entity_base_entity.clazzTpl),
        FileInfo(
            filePath: 'api/entity/entity_factory.entity.dart',
            codeBuild: api_entity_entity_factory.clazzTpl),
        FileInfo(
            filePath: 'api/interceptors/log_interceptors.api.dart',
            codeBuild: api_interceptors_log_interceptors.clazzTpl),
        FileInfo(
            filePath: 'api/interceptors/request_interceptors.api.dart',
            codeBuild: api_interceptors_request_interceptors.clazzTpl),
        FileInfo(
            filePath: 'api/interceptors/response_interceptors.api.dart',
            codeBuild: api_interceptors_response_interceptors.clazzTpl),
        FileInfo(
            filePath: 'api/manager/http_manager.api.dart',
            codeBuild: api_manager_http_manager.clazzTpl),
        FileInfo(
            filePath: 'api/transformer/transformer.dart',
            codeBuild: api_transformer_transformer.clazzTpl),
        FileInfo(
            filePath: 'api/api_factory.interface.dart',
            codeBuild: api_api_factory.clazzTpl),
        FileInfo(
            filePath: 'api/api_interface.api.dart',
            codeBuild: api_api_interface.clazzTpl),
        FileInfo(
            filePath: 'utils/print_util.dart',
            codeBuild: utils_print_util.clazzTpl),
        FileInfo(
            filePath: 'utils/screen_util.dart',
            codeBuild: utils_screen_util.clazzTpl),
        FileInfo(
            filePath: 'utils/toast_util.dart',
            codeBuild: utils_toast_util.clazzTpl),
        FileInfo(
            filePath: 'utils/sys_error_util.dart',
            codeBuild: utils_sys_error_util.clazzTpl),
        FileInfo(
            filePath: 'utils/encrypt_util.dart',
            codeBuild: utils_encrypt_util.clazzTpl),
        FileInfo(
            filePath: 'utils/font_family_util.dart',
            codeBuild: utils_font_family_util.clazzTpl),
        FileInfo(
            filePath: 'pages/main/main_page.dart',
            codeBuild: pages_main_main_page.clazzTpl),
        FileInfo(
            filePath: 'debug/app_debug_model.dart',
            codeBuild: debug_app_debug_model.clazzTpl),
        FileInfo(filePath: 'debug/main.dart', codeBuild: debug_main.clazzTpl),
        FileInfo(
            filePath: 'debug/app_debug.dart',
            codeBuild: debug_app_debug.clazzTpl),
        FileInfo(
            filePath: 'debug/app_error_log.dart',
            codeBuild: debug_app_error_log.clazzTpl),
        FileInfo(
            filePath: 'debug/slice/actions.dart',
            codeBuild: debug_slice_actions.clazzTpl),
        FileInfo(
            filePath: 'debug/slice/reducer.dart',
            codeBuild: debug_slice_reducer.clazzTpl),
        FileInfo(
            filePath: 'mixin/base_binding_observer_mixin.dart',
            codeBuild: mixin_base_binding_observer_mixin.clazzTpl),
        FileInfo(
            filePath: 'mixin/base_widget_mixin.dart',
            codeBuild: mixin_base_widget_mixin.clazzTpl),
        FileInfo(
            filePath: 'mixin/theme_binding_observer_mixin.dart',
            codeBuild: mixin_theme_binding_observer_mixin.clazzTpl),
        FileInfo(
            filePath: 'l10n/intl_en.arb', codeBuild: l10n_intl_en.clazzTpl),
        FileInfo(
            filePath: 'l10n/intl_zh.arb', codeBuild: l10n_intl_zh.clazzTpl),
        FileInfo(
            filePath: 'l10n/generated/l10n.dart',
            codeBuild: l10n_generated_l10n.clazzTpl),
        FileInfo(
            filePath: 'l10n/generated/intl/messages_all.dart',
            codeBuild: l10n_generated_intl_messages_all.clazzTpl),
        FileInfo(
            filePath: 'l10n/generated/intl/messages_en.dart',
            codeBuild: l10n_generated_intl_messages_en.clazzTpl),
        FileInfo(
            filePath: 'l10n/generated/intl/messages_zh.dart',
            codeBuild: l10n_generated_intl_messages_zh.clazzTpl),
      ];
}
